草庐IT

Java \'Prototype\' 模式 - new vs clone vs class.newInstance

全部标签

javascript - 你如何引用 Array.prototype.slice.call()?

我正在编写一个脚本,其中我需要在许多不同的地方克隆数组。因此,我想执行以下操作来模拟克隆功能:varclone=[].slice.call;vararr1=[1,2,3,4,5,6,7,8,9,10];vararr2=clone(arr1,0);不幸的是,上面的代码导致:TypeError:objectisnotafunction。我意识到有很多功能可以进行深度克隆和浅拷贝,但我只想使用内置方法。有趣的是,以下确实有效:varclone=[].slice;vararr1=[1,2,3,4,5,6,7,8,9,10];vararr2=clone.call(arr1,0);有谁知道为什么第

javascript - javascript中构造函数的静态方法模式

functionFoo(){...}Foo.bar=function(){...};这是将静态方法添加到构造函数的唯一模式吗?特别是,是否无法在Foo()本身的定义中创建静态方法bar()? 最佳答案 当您说“内部”时,听起来您需要一种干净的方式将所有内容保存在一个地方。您可能会使用支持静态声明的类继承库。或者简单地采用一个并自己扩展它以添加该功能。要以一种简单(但不是那么紧凑)的方式将所有内容放在一起,您可以采用如下方式:varFoo=(function(){varctor=function(){//theconstructor}

javascript - 使用 .prototype 和 __proto__ 创建子类

我最近一直在通过编写一些gnomeshell扩展来学习javascript,因此我对Javascript的理解受到了我在gnome-shelljavascript源代码中观察到的示例的影响。我有一种感觉,我对类的理解是错误的,只是想得到一些澄清。我已经编写了一些自己的子类,并且在每种情况下,我都通过遵循gnome-shelljavascript源代码中的类似代码来简单地定义它们:Subclass=function(){this._init.apply(this,arguments);}Subclass.prototype={__proto__:Superclass.prototype,

javascript - Constructor.prototype 不在原型(prototype)链中?

相关:Confusionaboutprotypechain,primitivesandobjects在Firebug控制台中:a=12a.constructor.prototype.isPrototypeOf(a)//prints'false'我认为这应该打印true 最佳答案 a=12创建一个原始数字,它与Number对象不太一样。出于属性访问的目的,基元被隐式转换为对象。a=12;//aisaprimitiveb=newNumber(12);//bisanobjecta.constructor.prototype.isProto

javascript - 在全局范围调用 Object.prototype 方法

此代码会引发错误。try{alert(hasOwnProperty('window'));}catch(e){alert(e);//TypeError:can'tconvertundefinedtoobject}但是这段代码不会抛出错误。try{alert(this.hasOwnProperty('window'));//true(ifonbrowser)}catch(e){//throughcatchblockalert(e);}LiveExample|LiveSource据我所知,如果this是全局对象,则func(arg)等于this.func(arg)。为什么会发生这样的事情?

javascript - Babel 已经做了 Object.create(superClass.prototype) 为什么还要用 setPrototypeOf 来继承?

将以下代码发布到BabelREPLclassTest{}classTest2extendsTest{}你得到了这个inherits函数function_inherits(subClass,superClass){if(typeofsuperClass!=="function"&&superClass!==null){thrownewTypeError("Superexpressionmusteitherbenullorafunction,not"+typeofsuperClass);}subClass.prototype=Object.create(superClass&&superC

javascript - 原型(prototype)继承。这个简单的例子有什么问题?

functiona(){this.testing='testing';}functionb(){}b.prototype=newa();console.log(b.testing);控制台显示未定义,而不是“测试”。我做错了什么? 最佳答案 您还没有创建'b'的实例。varbInstance=newb();console.log(bInstance.testing);换句话说,原型(prototype)的属性只出现在b类型的对象上,而不是b()构造函数本身。 关于javascript-原

javascript - 解释主干对象和类创建模式

我是中级javascript开发人员,正在尝试了解Backbone库的内部工作原理,如果有人帮助我解决一些挑战,我将不胜感激。这是我的理解Backbone中构造函数的基本定义是Backbone.Model=function(attributes,options){}然后他们使用通用扩展方法在我们的构造函数原型(prototype)中添加通用功能。_.extend(Backbone.Model.prototype,Backbone.Events,{...})现在直到这一部分我都知道发生了什么并且很乐意通过以下代码实例化新对象varuser=newBackbone.Model()这是我觉得

javascript - 这种 JavaScript 编码风格有什么问题? (闭包与原型(prototype))

我们一直在讨论如何最好地处理我们的JS应用程序中的对象,研究StoyanStefanov的书,阅读无休止的关于“new”、“this”、“prototype”、闭包等的SO帖子(事实上有这么多,而且他们有很多相互竞争的理论,这表明没有完全明显的答案)。那么让我们假设我们不关心私有(private)数据。我们满足于相信用户和开发人员不会在我们定义的方式之外乱搞对象。鉴于此,这种技术有什么问题(除了它似乎违背了数十年的OO风格和历史)?//namespacetoisolateallPERSON'slogicvarPERSON={};//returnanobjectwhichshouldon

Javascript - 在构造函数或构造函数的原型(prototype)属性中设置属性?

所以我听说过应该在构造函数的原型(prototype)属性中设置方法,这样它就不会有多个不同的实例。但是属性本身呢?哪个是最佳实践?如果是这样,构造函数不应该总是空的吗?functionGadget(name,color){this.name=name;this.color=color;this.whatAreYou=function(){return'Iama'+this.color+''+this.name;}}这实际上应该是...?functionGadget(name,color){}Gadget.prototype.name=name;Gadget.prototype.co